home *** CD-ROM | disk | FTP | other *** search
/ Windows News 2005 February / WN_129_CD.iso / Windows / Extensions Firefox / Bookmarks Synchronizer / bookmarksftp1_0_1.xpi / chrome / bookmarksftp.jar / content / bmsyncOptions.js < prev    next >
Text File  |  2004-10-08  |  7KB  |  253 lines

  1. var gXBEL=null;
  2. var gSelectedFolder="";
  3. var gAcceptButton=null;
  4. var gDirty=false;
  5.  
  6. function setcheckbox(aID,aDef)
  7. {
  8.   document.getElementById(aID).checked=gXBEL.settings.getBool(aID,aDef);
  9. }
  10.  
  11. function getcheckbox(aID)
  12. {
  13.   try{
  14.   gXBEL.settings.setBool(aID,document.getElementById(aID).checked);
  15.   }catch(e){alert(aID);}
  16. }
  17.  
  18.  
  19. function initFolder(uri)
  20. {
  21.   initServices();
  22.   initBMService();
  23.   var exists=true;
  24.   var res=RDF.GetResource(uri);
  25.   if(! BMSVC.isBookmarkedResource(res)){
  26.     res=RDF.GetResource("NC:BookmarksRoot");
  27.     exists=false;
  28.   }
  29.   var nameArc=RDF.GetResource(NC_NS+"Name");
  30.   var target=BMDS.GetTarget(res,nameArc,true);
  31.   var name="";
  32.   if(target)
  33.     name=target.QueryInterface(Components.interfaces.nsIRDFLiteral).Value;
  34.   var textbox=document.getElementById("folder-textbox");
  35.   textbox.value=name;
  36.  
  37.   gSelectedFolder=res.Value;
  38.   dirtyHandler(textbox);
  39.  
  40.   return exists;
  41. }
  42.  
  43. function flush()
  44. {
  45.   gXBEL.settings.host=document.getElementById('host').value;
  46.   gXBEL.settings.user=document.getElementById('username').value;
  47.   gXBEL.settings.password=document.getElementById('password').value;
  48.   gXBEL.settings.path=document.getElementById('path').value;
  49.   gXBEL.settings.dlurl=document.getElementById('dlurl').value;
  50.   gXBEL.settings.tags=document.getElementById('addtag').value;
  51.   gXBEL.settings.charset=document.getElementById('charset').value;
  52.   var protocol=document.getElementById('protocol').selectedItem;
  53.   gXBEL.settings.protocol=(protocol)? protocol.value:"ftp";
  54.   gXBEL.settings.selectedFolder=gSelectedFolder;
  55.   var checkboxs=document.getElementsByTagName("checkbox");
  56.   for(var i=0; i<checkboxs.length;i++)
  57.     getcheckbox(checkboxs[i].id);
  58. }
  59.  
  60. function refresh()
  61. {
  62.  
  63.   if(gDirty && confirm(gXBEL.settings.getString("applyconfirm")))
  64.   {
  65.     onApply();
  66.     return;
  67.   }
  68.  
  69.   document.getElementById('path').value=gXBEL.settings.path;
  70.   document.getElementById('dlurl').value=gXBEL.settings.dlurl;
  71.   document.getElementById('addtag').value=gXBEL.settings.tags;
  72.   document.getElementById('charset').value=gXBEL.settings.charset;
  73.   document.getElementById("protocol").selectedItem=document.getElementById(gXBEL.settings.protocol);
  74.   document.getElementById('host').value=gXBEL.settings.host;
  75.   document.getElementById('username').value=gXBEL.settings.user;
  76.   document.getElementById('password').value=gXBEL.settings.password;
  77.   document.getElementById('masked').value=gXBEL.settings.maskedDownloadURI;
  78.  
  79.  
  80.   setcheckbox("autodownload",false);
  81.   setcheckbox("autoupload",false);
  82.   setcheckbox("dirtycheck",true);
  83.   setcheckbox("merge",false);
  84.   setcheckbox("publicid",true);
  85.   setcheckbox("favicon",true);
  86.   setcheckbox("livemark",true);
  87.   setcheckbox("keyword",true);
  88.   setcheckbox("webpanel",true);
  89.   setcheckbox("session.enabled",false);
  90.  
  91.   var exists=initFolder(gXBEL.settings.selectedFolder);
  92.  
  93.   gDirty=false;
  94.   gAcceptButton.setAttribute("disabled","true");
  95.  
  96.   var textboxs=document.getElementsByTagName("textbox");
  97.   for(var i=0; i<textboxs.length; i++)
  98.     textboxs[i].setAttribute("dirty","false");
  99.   var checkboxs=document.getElementsByTagName("checkbox");
  100.   for(var j=0; j<checkboxs.length; j++)
  101.     checkboxs[j].setAttribute("dirty","false");
  102.   document.getElementById("protocol").setAttribute("dirty","false");
  103.  
  104.   if(!exists)
  105.     dirtyHandler(document.getElementById("folder-textbox"));
  106.   updateSessions();
  107.  
  108. }
  109.  
  110. function updateSessions(){
  111.   document.getElementById("undo-button")
  112.           .setAttribute("disabled",gXBEL.settings.undoable? "false":"true");
  113.   document.getElementById("redo-button")
  114.           .setAttribute("disabled",gXBEL.settings.redoable? "false":"true");
  115. }
  116.  
  117. function clearSession(){
  118.   gXBEL.settings.undoCache="";
  119.   gXBEL.settings.redoCache="";
  120.   updateSessions();
  121. }
  122.  
  123. function redo(){
  124.   gXBEL.redo();
  125.   updateSessions();
  126. }
  127.  
  128. function undo(){
  129.   gXBEL.undo();
  130.   updateSessions();
  131. }
  132.  
  133. function getExportFile()
  134. {
  135.   var fp = Components.classes["@mozilla.org/filepicker;1"]
  136.       .createInstance(Components.interfaces.nsIFilePicker);
  137.   fp.init(window, gXBEL.settings.title, fp.modeSave);
  138.   fp.appendFilter("XML Document(*.xml)","*.xml;");
  139.   fp.appendFilters(fp.filterAll);
  140.   fp.defaultString="xbel.xml";
  141.   return (fp.show() == fp.returnCancel)? null:fp.file;
  142. }
  143.  
  144. function getImportFile()
  145. {
  146.   var fp = Components.classes["@mozilla.org/filepicker;1"]
  147.       .createInstance(Components.interfaces.nsIFilePicker);
  148.   fp.init(window, gXBEL.settings.title, fp.modeOpen);
  149.   fp.appendFilter("XML Document(*.xml)","*.xml;");
  150.   fp.appendFilters(fp.filterAll);
  151.   return (fp.show() == fp.returnCancel)? null:fp.file;
  152. }
  153.  
  154. /*  Event Handlers  */
  155. function onOK()
  156. {
  157.   flush();
  158. }
  159.  
  160. function onLoad()
  161. {
  162.   gXBEL=new BookmarksSynchronizerXBEL();
  163.   gAcceptButton=document.getAnonymousElementByAttribute(document.documentElement, "dlgtype", "extra1");
  164.   refresh();
  165.  
  166.   var textboxs=document.getElementsByTagName("textbox");
  167.   for(var i=0; i<textboxs.length; i++)
  168.     textboxs[i].addEventListener("input",function(event){dirtyHandler(event.target);},false);
  169.   var checkboxs=document.getElementsByTagName("checkbox");
  170.   for(var j=0; j<checkboxs.length; j++)
  171.     checkboxs[j].addEventListener("command",function(event){dirtyHandler(event.target);},false);
  172.   var radios=document.getElementsByTagName("radio");
  173.   for(var k=0; k<radios.length; k++)
  174.     radios[k].addEventListener("command",function(event){dirtyHandler(event.target.radioGroup);},false);
  175.  
  176.  
  177. }
  178.  
  179. function onApply()
  180. {
  181.   if(!gDirty) return;
  182.   gDirty=false;
  183.   gAcceptButton.setAttribute("disabled","true");
  184.  
  185.   flush();
  186.  
  187.   var textboxs=document.getElementsByTagName("textbox");
  188.   for(var i=0; i<textboxs.length; i++)
  189.     textboxs[i].setAttribute("dirty","false");
  190.   var checkboxs=document.getElementsByTagName("checkbox");
  191.   for(var j=0; j<checkboxs.length; j++)
  192.     checkboxs[j].setAttribute("dirty","false");
  193.   document.getElementById("protocol").setAttribute("dirty","false");
  194.  
  195.   document.getElementById('masked').value=gXBEL.settings.maskedDownloadURI;
  196.   updateSessions();
  197. }
  198.  
  199.  
  200. function dirtyHandler(aTarget)
  201. {
  202.   aTarget.setAttribute("dirty","true");
  203.   if(!gAcceptButton || gDirty) return;
  204.   gDirty=true;
  205.   gAcceptButton.setAttribute("disabled","false");
  206. }
  207.  
  208.  
  209. /* commands */
  210.  
  211. function selectBMFolder()
  212. {
  213.   window.open("chrome://bookmarksftp/content/selectFolder.xul","_blank","chrome,resizable,modal");
  214. }
  215.  
  216. function upload()
  217. {
  218.   refresh();
  219.   window.open("chrome://bookmarksftp/content/upload.xul","_blank","chrome,resizable,titlebar=no");
  220. }
  221. function download()
  222. {
  223.   refresh();
  224.   gXBEL.updateUndoCache();
  225.   window.open("chrome://bookmarksftp/content/download.xul","_blank","chrome,resizable,titlebar=no");
  226.   updateSessions();
  227. }
  228.  
  229. function importXBEL()
  230. {
  231.   gXBEL.updateUndoCache();
  232.   refresh();
  233.   var file=getImportFile();
  234.   if(!file) return;
  235.  
  236.   try{
  237.     gXBEL.source=gXBEL.settings.read(file);
  238.   }catch(e){
  239.     if(e && e.toString().match(/^bmsync\:(.+)$/))
  240.       e=gXBEL.settings.getString(RegExp.$1);
  241.     alert(e);
  242.   }
  243.   updateSessions();
  244. }
  245.  
  246. function exportXBEL()
  247. {
  248.   refresh();
  249.   var file=getExportFile();
  250.   if(!file) return;
  251.   gXBEL.settings.write(file,gXBEL.source);
  252. }
  253.